﻿<?xml version="1.0" encoding="utf-8" ?>
<SourceAnalyzer Name="Extensions naming rules">
  <Description>
    Extended naming rules
  </Description>
  <Rules>
    <Rule Name="InterfaceNamesMustBeginWithI" CheckId="EX1001">
      <Context>Interface names must start with a 'I'.</Context>
      <Description>Interface are easier to distinguish when prefixed.</Description>
    </Rule>
    <Rule Name="ElementMustBeginWithUpperCaseLetter" CheckId="EX1002">
      <Context>Element first letter must be uppercase (after prefix if applicable). ({0})</Context>
      <Description>Common rule for readability.</Description>
    </Rule>
    <Rule Name="MethodParameterPUnderscorePrefix" CheckId="EX1003">
      <Context>Method parameters should start with 'P_' prefix. ({0})</Context>
      <Description>Method parameters are easier to distinguish when prefixed.</Description>
    </Rule>
    <Rule Name="MethodVariableLUnderscorePrefix" CheckId="EX1004">
      <Context>Local variables should start with 'L_' prefix. ({0}, {1})</Context>
      <Description>Local variables are easier to distinguish when prefixed extexter.</Description>
    </Rule>
    <Rule Name="FieldMustBeginWithUnderscoreOrPrefixed" CheckId="EX1005">
      <Context>Field names must begin with '_' or must be trigram prefixed. ({0}, {1})</Context>
      <Description>Fields are easier to distinguish when prefixed.</Description>
    </Rule>
    <Rule Name="FieldPrefixMustBeUppercase" CheckId="EX1006">
      <Context>Field prefix must be uppercase. ({0})</Context>
      <Description>Fields prefix are easier to distinguish when uppercased.</Description>
    </Rule>
    <Rule Name="ConstFieldMustBeUppercase" CheckId="EX1007">
      <Context>Const field must be uppercase. ({0})</Context>
      <Description>Const field are easier to distinguish when uppercased.</Description>
    </Rule>
    <Rule Name="ElementNameMustHaveLongName" CheckId="EX1008">
      <Context>Element names must have at least 3 characters. ({0})</Context>
      <Description>Descriptive names are easier to understand.</Description>
    </Rule>
    <Rule Name="CodeMustNotContainHardcodedStrings" CheckId="EX1009">
      <Context>No hard coded string in code ({0}).</Context>
      <Description>Hard coded strings must be const values.</Description>
    </Rule>
  </Rules>
</SourceAnalyzer>